//
// Created by SDSC\202100300261 on 23-11-17.
//

#ifndef COMPILER_MEMORY_H
#define COMPILER_MEMORY_H


#include <stack>
#include "CodeTable.h"

class Memory {
public:
    Memory();
    Memory(std::vector<CodeEntry>* _code);
    int P;//pc，指向下一条指令
    int T;//栈顶寄存器
    int B;//基地址寄存器

    std::vector<int> S;//数据栈
    std::vector<CodeEntry>* codes;//指令表
/**
 * 对于指令的操作
 * @return
 */
    CodeEntry* getCode();


    /**
     * 对于栈空间的操作
     */
    void push(int value);
    int pop();
    int getTop();
    void set(int index,int value);
    int getLevelAdr(int level);
};


#endif //COMPILER_MEMORY_H
